% fname: routing_oddeven__sel_random__topology_8x8__.m
% ./noxim -routing oddeven -sel random -dimx 8 -dimy 8  -sim 10000 -warmup 2000 -size 8 8 -traffic transpose1 -buffer 4 

function [max_pir, max_throughput, min_delay] = routing_oddeven__sel_random__topology_8x8__(symbol)

data = [
%             pir      avg_delay     throughput      max_delay       rpackets         rflits
            0.008        21.9096      0.0648184            210           4148          33187
            0.008        22.7944      0.0651211            315           4168          33342
            0.008        20.2247      0.0620195            153           3969          31754
            0.008        21.4124      0.0638262            267           4091          32679
            0.008        21.7493      0.0650938            296           4165          33328
            0.008        20.9853      0.0628594            188           4023          32184
            0.008        21.3813      0.0631758            171           4039          32346
            0.008        20.2542      0.0637812            131           4083          32656
            0.008        23.0182      0.0636328            666           4073          32580
            0.008        21.3407      0.0651855            277           4174          33375
            0.008         20.183      0.0630781            191           4039          32296
            0.008        22.2897      0.0643516            243           4118          32948
            0.008        22.5443      0.0668789            239           4277          34242
            0.008        22.2127      0.0651855            203           4171          33375
            0.008         22.151      0.0653984            214           4185          33484
            0.008        20.6961      0.0641484            189           4106          32844
            0.008        20.7214      0.0634375            194           4059          32480
            0.008        21.5342      0.0661699            171           4236          33879
            0.008        20.8399      0.0632715            163           4047          32395
            0.008        21.9457      0.0648145            271           4146          33185
           0.0088        22.9247      0.0723379            503           4632          37037
           0.0088        21.7077      0.0684512            221           4382          35047
           0.0088        23.1373      0.0706797            243           4524          36188
           0.0088        23.9835      0.0711289            243           4555          36418
           0.0088        22.8792      0.0691328            227           4421          35396
           0.0088        22.4611      0.0699785            167           4476          35829
           0.0088        24.7487      0.0714395            253           4572          36577
           0.0088        25.3871      0.0697109            476           4461          35692
           0.0088        23.1157      0.0706445            210           4522          36170
           0.0088        24.5716       0.070832            314           4536          36266
           0.0088          28.92       0.070502            450           4513          36097
           0.0088        23.4043       0.069709            240           4464          35691
           0.0088        24.7938      0.0701035            447           4485          35893
           0.0088        23.2707      0.0713535            227           4566          36533
           0.0088         23.413       0.070793            257           4530          36246
           0.0088         23.447      0.0698672            217           4472          35772
           0.0088        23.2026      0.0690117            195           4418          35334
           0.0088        23.5987      0.0703516            270           4503          36020
           0.0088        24.3866      0.0695664            334           4452          35618
           0.0088        23.3767      0.0706719            300           4521          36184
           0.0096        27.4813      0.0776387            202           4968          39751
           0.0096        27.5038      0.0762617            284           4881          39046
           0.0096        28.9457      0.0762246            640           4882          39027
           0.0096        27.8233      0.0778242            337           4980          39846
           0.0096        29.8737      0.0778652            650           4982          39867
           0.0096        26.1045      0.0782344            301           5005          40056
           0.0096        25.9726      0.0769668            531           4927          39407
           0.0096        29.4446      0.0792129            306           5070          40557
           0.0096        29.4005      0.0763164            580           4886          39074
           0.0096        29.1203      0.0774062            843           4953          39632
           0.0096        25.3522      0.0752773            262           4818          38542
           0.0096        29.7314      0.0765801            569           4900          39209
           0.0096        28.0537      0.0774805            447           4955          39670
           0.0096        27.3938      0.0769238            362           4926          39385
           0.0096        29.7644       0.078377            317           5017          40129
           0.0096        27.6214      0.0777773            336           4976          39822
           0.0096        28.0748      0.0770898            261           4935          39470
           0.0096        29.9795      0.0778809            456           4984          39875
           0.0096        26.1881      0.0769551            461           4923          39401
           0.0096        26.7159      0.0785156            330           5022          40200
           0.0104        36.4533      0.0823066           1322           5272          42141
           0.0104        28.9043      0.0823457            300           5268          42161
           0.0104        31.9456          0.083            482           5312          42496
           0.0104        34.0316      0.0840625            428           5381          43040
           0.0104        34.2258      0.0832715            449           5331          42635
           0.0104        31.8583      0.0818047            377           5237          41884
           0.0104        32.6484      0.0842695            298           5395          43146
           0.0104        36.9157      0.0834082            560           5337          42705
           0.0104        34.3203      0.0844004            509           5404          43213
           0.0104        29.6866      0.0840547            295           5377          43036
           0.0104        32.1289      0.0833867            438           5337          42694
           0.0104        31.8639      0.0835586            837           5348          42782
           0.0104        39.3314      0.0828047            651           5298          42396
           0.0104        31.9856      0.0833359            294           5333          42668
           0.0104        35.1383      0.0850879            367           5446          43565
           0.0104        30.9181      0.0827168            408           5298          42351
           0.0104        31.6557      0.0841719            520           5387          43096
           0.0104        34.2274       0.082457            674           5277          42218
           0.0104         28.875      0.0814102            505           5208          41682
           0.0104        34.2772       0.083123            665           5318          42559
           0.0112        37.5068      0.0905938            746           5799          46384
           0.0112         32.575      0.0887559            312           5680          45443
           0.0112        41.1849      0.0907949            539           5810          46487
           0.0112        48.4674      0.0899082           1250           5751          46033
           0.0112        40.1211      0.0900488            617           5765          46105
           0.0112         36.838      0.0890664            807           5703          45602
           0.0112        58.6993      0.0886699           1653           5676          45399
           0.0112        38.7989      0.0899961            962           5758          46078
           0.0112        47.5981       0.088002            730           5633          45057
           0.0112        38.2347      0.0892832            633           5717          45713
           0.0112        39.2938      0.0888906            724           5688          45512
           0.0112        40.0949       0.090416            787           5787          46293
           0.0112        41.5912      0.0898184            870           5749          45987
           0.0112        36.6811      0.0895664            803           5733          45858
           0.0112        31.3845      0.0896035            522           5732          45877
           0.0112        40.9045      0.0893184           1262           5717          45731
           0.0112        38.8416      0.0877734            693           5618          44940
           0.0112         46.929      0.0880195           1580           5634          45066
           0.0112        41.6965      0.0886387            943           5674          45383
           0.0112        42.9953      0.0889277            824           5692          45531
            0.012        49.9136      0.0945605            998           6053          48415
            0.012        48.8828      0.0961602           1173           6158          49234
            0.012        59.1953      0.0963086           1082           6164          49310
            0.012         53.948      0.0938203           1565           6001          48036
            0.012        55.8377      0.0967988            831           6194          49561
            0.012        69.8048      0.0953477           1403           6101          48818
            0.012        77.0643      0.0966074           1779           6185          49463
            0.012        55.6069       0.096332           2150           6166          49322
            0.012        65.2811       0.095252           1131           6094          48769
            0.012        61.7158      0.0961836           1142           6155          49246
            0.012        69.8366      0.0946934           1698           6059          48483
            0.012        60.5396      0.0954629           1261           6108          48877
            0.012        53.1828      0.0988145            836           6325          50593
            0.012        63.4219      0.0961582           2919           6151          49233
            0.012        55.9579      0.0938789           1656           6009          48066
            0.012        47.0874       0.095291            589           6098          48789
            0.012        54.0157      0.0958066            727           6129          49053
            0.012        50.5928      0.0953613           1263           6100          48825
            0.012        61.5508      0.0950742           1522           6087          48678
            0.012        51.1778        0.09475           1508           6064          48512
           0.0128        87.5192       0.104023           1474           6654          53260
           0.0128        70.4673       0.103189           1563           6604          52833
           0.0128        83.8432        0.10208           1643           6532          52265
           0.0128        109.984       0.102469           2616           6557          52464
           0.0128         71.787       0.101701           1167           6507          52071
           0.0128        67.2306       0.101244           2182           6484          51837
           0.0128        91.0853        0.10034           1714           6424          51374
           0.0128        99.2266       0.103123           1978           6603          52799
           0.0128        98.4221       0.101059           1559           6467          51742
           0.0128        68.6986       0.101609            874           6504          52024
           0.0128         85.742       0.100461           1514           6430          51436
           0.0128        66.7002        0.10168            996           6510          52060
           0.0128        66.0366        0.10325           1490           6609          52864
           0.0128        108.343       0.102072           2544           6535          52261
           0.0128        74.1796       0.100836           1863           6454          51628
           0.0128        79.7427       0.103223           1223           6608          52850
           0.0128        70.7672       0.101383           1367           6486          51908
           0.0128         72.536       0.100205           1360           6412          51305
           0.0128        111.577       0.103729           2089           6639          53109
           0.0128        92.9562       0.102037           2173           6529          52243
           0.0136        146.874       0.108221           2831           6925          55409
           0.0136        170.763       0.106531           2759           6821          54544
           0.0136        143.121       0.107293           3033           6865          54934
           0.0136        161.777       0.107701           3078           6891          55143
           0.0136        135.883       0.108248           3048           6929          55423
           0.0136        127.716       0.107029           2082           6851          54799
           0.0136        134.874       0.107541           2625           6884          55061
           0.0136        126.238       0.106844           2884           6838          54704
           0.0136        157.878       0.106756           4341           6832          54659
           0.0136        141.218       0.108082           4208           6922          55338
           0.0136        86.8374       0.108963           1267           6976          55789
           0.0136        132.334       0.107344           3119           6870          54960
           0.0136        149.632       0.105818           3875           6774          54179
           0.0136        117.947       0.106125           2140           6793          54336
           0.0136        118.679       0.107213           3558           6861          54893
           0.0136         154.83       0.108277           2781           6930          55438
           0.0136        143.886       0.105893           3348           6776          54217
           0.0136        145.084       0.108102           2977           6918          55348
           0.0136        122.726       0.107219           2819           6862          54896
           0.0136        119.548       0.105822           2761           6773          54181
           0.0144        157.959       0.112441           2932           7195          57570
           0.0144        233.066       0.111352           4191           7124          57012
           0.0144        196.345       0.111629           3556           7144          57154
           0.0144        235.695        0.11225           4990           7188          57472
           0.0144        183.431       0.112535           3347           7202          57618
           0.0144        186.653        0.11517           3829           7372          58967
           0.0144        188.579       0.110807           3643           7093          56733
           0.0144        185.319       0.113158           3918           7243          57937
           0.0144        211.669       0.110588           3946           7074          56621
           0.0144        218.711       0.114338           4625           7317          58541
           0.0144        277.765       0.111994           5077           7166          57341
           0.0144        206.749       0.112113           4136           7171          57402
           0.0144        230.344        0.11258           4975           7204          57641
           0.0144         146.93       0.113654           4251           7277          58191
           0.0144        228.509       0.114141           4467           7304          58440
           0.0144        163.413       0.111947           2818           7162          57317
           0.0144        170.225       0.113867           3784           7283          58300
           0.0144        136.054       0.112973           2665           7230          57842
           0.0144        198.914        0.11475           4108           7343          58752
           0.0144        177.808       0.112816           3701           7219          57762
           0.0152        258.986       0.116254           5144           7444          59522
           0.0152        263.944       0.116023           6424           7426          59404
           0.0152         299.32       0.117621           5172           7525          60222
           0.0152        241.626       0.117193           5776           7503          60003
           0.0152        278.526       0.115961           5780           7422          59372
           0.0152        259.757       0.117699           4444           7536          60262
           0.0152         268.11       0.116973           5751           7486          59890
           0.0152        252.554       0.115129           6835           7370          58946
           0.0152        245.752       0.116648           4802           7467          59724
           0.0152        220.852       0.115484           4898           7390          59128
           0.0152        206.131       0.115213           3496           7375          58989
           0.0152        213.819       0.113039           5097           7233          57876
           0.0152        216.525       0.115906           5408           7417          59344
           0.0152        255.852       0.115229           5815           7378          58997
           0.0152        223.281       0.118227           6277           7568          60532
           0.0152        241.723       0.116178           5875           7433          59483
           0.0152        246.223       0.117803           5164           7541          60315
           0.0152        281.775        0.11676           6333           7471          59781
           0.0152        270.657       0.116074           5756           7428          59430
           0.0152         248.34        0.11448           5648           7329          58614
];

rows = size(data, 1);
cols = size(data, 2);

data_delay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+1);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_delay = [data_delay; data(ifirst, 1:cols-5), avg ci];
end

figure(1);
hold on;
plot(data_delay(:,1), data_delay(:,2), symbol);

data_throughput = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+2);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_throughput = [data_throughput; data(ifirst, 1:cols-5), avg ci];
end

figure(2);
hold on;
plot(data_throughput(:,1), data_throughput(:,2), symbol);

data_maxdelay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+3);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_maxdelay = [data_maxdelay; data(ifirst, 1:cols-5), avg ci];
end

figure(3);
hold on;
plot(data_maxdelay(:,1), data_maxdelay(:,2), symbol);


%-------- Saturation Analysis -----------
slope=[];
for i=2:size(data_throughput,1),
    slope(i-1) = (data_throughput(i,2)-data_throughput(i-1,2))/(data_throughput(i,1)-data_throughput(i-1,1));
end

for i=2:size(slope,2),
    if slope(i) < (0.95*mean(slope(1:i)))
        max_pir = data_throughput(i, 1);
        max_throughput = data_throughput(i, 2);
        min_delay = data_delay(i, 2);
        break;
    end
end
